#!/usr/bin/qdroid
#codepage=Utf-8;

// "тест на дым" на загрузку QD-расширений модифицированного "формата 1" (v.2009.07.12_0000) 

// требует версию qDROID не ниже 2009.09.01_0000
// ТРЕБУЕТ ЗАГРУЖЕННОГО ByteArray
var res;
var LibName="qdlib_childprocess";
res0=loadlib_qd("qdlib_bytearray");

function main()
  {
	print (" ТЕСТЫ на дым расширения "+LibName);

	print ("//==================================================================");
	print ("// пробуем загрузить расширение. если не загрузили ранее - должны выдать \"0\" (ок)");
	res=loadlib_qd(LibName); // <<----- загружаем расширение
	if (res=0) print ("0016 pass !"); else print ("0016 ERROR!");
	//BBot.msgbox_information("","Код результата загрузки (-1=error; 0=ok; +1=warnings): \n"+res,1);
	//res=print ("Hello!");
	
	print ("//==================================================================");
	print ("// вызовем зерегистрированный объект и обратимся к его базовым функциям");
	var MsgText
	var HeadText;
	
	var obj_n=new ChildProcess(); // <<----- работает только если успешно загрузили расширение  
	MsgText= "ID=["+obj_n.GetId()+" ]";// у TcpServer есть GetID
	MsgText= MsgText+"\nName=["+obj_n.objectName+" ]";// у TcpServer есть GetID
	
	HeadText=" Тест "+LibName+" \"на дым\" ";
	//BBot.msgbox_information(HeadText,MsgText,1);
	print(""+HeadText+""+MsgText);
	if (res=0) print ("0032 pass !"); else print ("0032 ERROR!");
	
	
	print ("//==================================================================");
	print ("// теперь пробуем загрузить повторно. должно выдать -1");
	res=loadlib_qd(LibName); // <<----- загружаем расширение
	//BBot.msgbox_information("","Код результата повторной загрузки :"+res,1);
	if (res<0) print ("0032 pass !"); else print ("0032 ERROR!");
	// if (res!=-1) print (" [ERROR!] FAILED!");
	
	
	print ("//=== run ftp ======================================================");
	// надо бы какой-нибуль процесс запустить
	// но пусть это будет в полном тесте а не в smoke
	////var Args = new Array();
	////Args[0]="-c";
	//obj_n.start("gzip -c");
	
	
	obj_n.start("gzip -c");//ftp
	
	if (!obj_n.waitForStarted(1000))
		return "FAILED!";

print ("[0061]");
	obj_n.write((new ByteArray).append("uncompressed data\n"));
	obj_n.closeWriteChannel();

print ("[0065]");
	var compressed=new ByteArray;
	while (obj_n.waitForReadyRead(5000)) //по умолчанию, если не указано значение = 10 сек.
	  {
print ("[0070]");
		ba1=obj_n.readAll();
		print (""+ba1+"::"+ba1.size());
		compressed.append_ba(ba1);
	  };
print ("[0061]");

	if (obj_n.state()==2)
	  if (!obj_n.waitForFinished())
	     return obj_n.errorString();

	print (compressed.toLatin1String());
	print (compressed);
	return "ok";

  };//main

main();